home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C20 / WordList.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  975 b   |  38 lines

  1. //: C20:WordList.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Display a list of words used in a document
  7. #include "../require.h"
  8. #include <string>
  9. #include <cstring>
  10. #include <set>
  11. #include <iostream>
  12. #include <fstream>
  13. using namespace std;
  14.  
  15. const char* delimiters =
  16.   " \t;()\"<>:{}[]+-=&*#.,/\\~";
  17.  
  18. int main(int argc, char* argv[]) {
  19.   requireArgs(argc, 1);
  20.   ifstream in(argv[1]);
  21.   assure(in, argv[1]);
  22.   set<string> wordlist;
  23.   string line;
  24.   while(getline(in, line)) {
  25.     // Capture individual words:
  26.     char* s = // Cast probably won't crash:
  27.       strtok((char*)line.c_str(), delimiters);
  28.     while(s) {
  29.       // Automatic type conversion:
  30.       wordlist.insert(s); 
  31.       s = strtok(0, delimiters);
  32.     }
  33.   }
  34.   // Output results:
  35.   copy(wordlist.begin(), wordlist.end(),
  36.        ostream_iterator<string>(cout, "\n"));
  37. } ///:~
  38.